Спринт 2/18 → Тема 6/6: Основы отладки программ → Урок 3/3
Дебаггинг через интерфейс VSCode
С отладчиком pdb можно работать не только в терминале, но и через интерфейс редактора кода, в том числе и VSCode.
Если вы закрыли проект calc_and_win, откройте его в редакторе кода снова и активируйте виртуальное окружение. Далее откройте файл main.py и запустите отладчик — в левой боковой панели VSCode выберите пункт Run and Debug:
Слева появится кнопка Run and Debug, но не спешите нажимать её. Сначала установите брейкпоинт (точку останова) — на строке 44 в модуле module.py. В VSCode, как и во многих других редакторах кода, поставить точку останова можно, кликнув рядом с номером строки, на которой вы хотите остановить выполнение программы, — брейкпоинт обозначится красной точкой.
После того как установите брейкпоинт, перейдите в файл main.py и нажмите кнопку Run and Debug. VSCode попросит вас выбрать конфигурацию отладки, выбирайте «Файл Python»:
Окно редактора кода изменится, а программа выполнится до тех пор, пока не остановится на брейкпоинте:
Окно VSCode в режиме отладки делится на четыре части:
- Боковая Debug-панель с информационным меню.
- Debug Toolbar — панель с кнопками управления процессом отладки:
- continue (F5) —
c (continue); - step over (F10) —
n (next); - step into (F11) —
s (step); - step out (Shift+F11) —
r (return); - restart (Shift+Ctrl+F5) — перезапуск отладчика;
- stop (Shift+F5) — остановка отладки.
- continue (F5) —
- Рабочая область с кодом. Здесь появился указатель, который останавливается на строке кода, на которой Python находится в данный момент.
- Терминал, запущенный в режиме отладки.
Переходим к отладке игры «Рассчитай и ПОБЕДИ!». Вам нужно следить за двумя областями на экране:
- За терминалом: здесь программа будет выполнятся с учётом команд, которые вы отдадите дебаггеру.
- За боковой Debug-панелью: здесь интересен раздел VARIABLES — в нём будут отображаться значения аргументов и переменных на текущем этапе выполнения программы. Сейчас вы должны видеть здесь специальные переменные и объявленные имена функций.
Итак, программа выполнится до установленного брейкпоинта — 44 строка в модуле module.py. В рабочей области с кодом эта строка отмечена специальным значком:
Продолжите выполнять программу по шагам. Используйте кнопку step into в Debug Toolbar. Делайте шаги до тех пор, пока специальный значок не будет указывать на строку 39 файла module.py.
Далее посмотрите в раздел VARIABLES боковой Debug-панели. Значение переменной
attack_value равно 5, а в переменную total, как видно из кода, записана единица. Общее количество урона подсчитано неверно.Всё, ошибка найдена, все пути её поиска пройдены. Пора исправлять это недоразумение. Исправьте строку в коде, где суммируются очки атак, замените единицу на переменную
attack_value:PYTHON
Теперь игра в полном порядке. Сыграйте в неё ещё раз и убедитесь в этом.
Тема по дебаггингу была насыщенной и нормально, если вам не так просто вспомнить, с чего тут вообще всё начиналось. Чтобы немного структурировать полученные знания, скачивайте шпаргалку. В ней кратко описаны ключевые моменты темы.